let {serverPort} = require('../config/index.js');

// 引入service层
let {
    GetUserByName,
    UpdateUserStateService,
    UpdateUserConfigService,
    GetUserListService,
    GetUserAvatarService,
    GetUserConfigService
} = require('../service/user.service.js');

// 每一个controller类 每次使用时定义一个实例
class UserController {
    // 用户登录
    async login(req, res, next) {
        // 获取用户名密码
        let {username, password} = req.body
        let result = await GetUserByName(username);
        // 处理接口响应
        if (!result.length) {
            // 向下一个中间件抛出异常
            next(new Error('当前用户不存在'));
            return false
        }
        let user = result[0];
        let pwd = user.password
        if (pwd === password) {
            res.setHeader('Access-Control-Allow-Origin', '*');
            // 登录成功修改用户在线状态
           // UpdateUserState(user.id, 1)
            // 登录成功，返回当前用户信息
            res.json(user)
        } else {
            next(new Error('当前用户密码错误'))
        }

    }

    // 获取在线用户
    async getUserList(req,res,next){
        let result = await GetUserListService();
        if(result){
            res.json(result)
        }else{
            next(new Error('当前无用户在线'));
        }
    }
    // 修改用户在离线状态
    async UpdateUserState(userID,state){
        let result = await UpdateUserStateService(userID,state);
    }
    // 获取用户头像
    async GetUserAvatar(req,res,next){
       let result = await GetUserAvatarService();

    }
    // 上传自定义配置
    async UpdateUserConfig(req,res,next){
        // 获取Multer中间件存储在请求头中的文件信息
        let {filename} = req.file
        let {userID,type} = req.body
        // 拼接头像的服务器存储地址-关联用户存储
        //'http://localhost:9090/uploads/avatar':无需加uploads路径：已添加代理
        // 获取存储文件夹
        let fold = type.replace('BgUrl','')
        let BaseUrl = `http://localhost:${serverPort}/${fold}-bg`
        let imgUrl = `${BaseUrl}/${filename}`
        console.log('存储url------',imgUrl)
        let result = await UpdateUserConfigService({type,imgUrl,userID});
        if(result){
            res.end('上传成功')
        }
    }
    // 获取用户自定义配置
    async GetUserConfig(req,res,next){
        let {type,userID} = req.query
        let result = await GetUserConfigService(type,userID);
        console.log('control---',result)
        if(result){
            res.json(result)
        }else{
            next(new Error('当前用户无聊天背景'));
        }
    }

}

// 每引入一次，创建一个向外暴露的实例
module.exports = new UserController();
